package com.android_mvc.framework.gps; import java.io.IOException; import java.util.List; import java.util.Locale; import com.android_mvc.framework.common.FWUtil; import android.content.Context; import android.location.Address; import android.location.Geocoder; /** * GPSの座標情報と住所情報を相互変換するクラス。 * @author id:language_and_engineering * */ public class GeocodeUtil { // @see http://d.hatena.ne.jp/language_and_engineering/20110828/p1 /** * 座標から住所文字列へ変換。だめなら?を返す */ public static String point2geostr(double latitude, double longitude, Context context) { String address_string = new String(); // 変換実行 Geocoder coder = new Geocoder(context, Locale.JAPAN); try { List<Address> list_address = coder.getFromLocation(latitude, longitude, 1); // may throw IOE if ( ! list_address.isEmpty()) { // 変換成功時は,最初の変換候補を取得 Address address = list_address.get(0); address_string = LocationUtil.address2geostr( address ); } FWUtil.d("地名:" + address_string); return address_string; } catch(IOException e) { return "?"; } } /** * 住所文字列から座標情報へ変換。だめならnullを返す。 */ public static Address geostr2address(String str_address, Context context) { Address address = null; // 変換実行 Geocoder coder = new Geocoder(context, Locale.JAPAN); try { // TODO: NW接続するので,別スレッド化が推奨されている List<Address> list_address = coder.getFromLocationName(str_address, 1); // may throw IOE if (!list_address.isEmpty()){ // 変換成功時は,最初の変換候補を取得 address = list_address.get(0); } return address; } catch(IOException e) { return null; } } }